package com.wang.cloud.common.mysql.utils;

import com.alibaba.ttl.TransmittableThreadLocal;
import lombok.extern.slf4j.Slf4j;

/**
 * @author wang ye
 * @date 2024/6/27
 */
@Slf4j
public class DataSourceContextHolder {

    /**
     * 数据源-线程缓存
     */
    private static final ThreadLocal<String> DATASOURCE_HOLDER = new TransmittableThreadLocal<>();

    /**
     * 获取当前线程的数据源
     *
     * @return 数据源名称
     */
    public static String getDataSource() {
        return DATASOURCE_HOLDER.get();
    }

    /**
     * 设置数据源
     *
     * @param dataSourceName 数据源名称
     */
    public static void setDataSource(String dataSourceName) {
        DATASOURCE_HOLDER.set(dataSourceName);
        log.info("指定数据源 dataSourceName={}", dataSourceName);
    }

    /**
     * 删除当前数据源
     */
    public static void removeDataSource() {
        DATASOURCE_HOLDER.remove();
        log.info("清除数据源");
    }

}
